package com.deer.wms.ASN.manage.service;

import com.deer.wms.ASN.manage.model.in.AcceptRecord;
import com.deer.wms.ASN.manage.model.qc.QcRecord;
import com.deer.wms.ASN.manage.model.qc.QcRecordCriteria;
import com.deer.wms.ASN.manage.model.qc.QcRecordDto;
import com.deer.wms.ASN.manage.model.qc.QcResultCriteria;
import com.deer.wms.intercept.common.data.CurrentUser;
import com.deer.wms.project.root.service.SuperService;

import java.util.List;


/**
 *
 * @author guo
 * @since 2020/01/15
 */
public interface QcRecordService extends SuperService<QcRecord> {

    /**
     * 根据条件查询
     * @param criteria 查询条件
     * @return List<QcRecordDto>
     */
    List<QcRecordDto> findList(QcRecordCriteria criteria);

    void createFile(String detailNo, CurrentUser currentUser);

    void deleteByDetailNo(String detailNo);

    /**
     * 记录质检结果 生成质检单 <p>
     * 合格/让步 : 回写对应库存状态 <p>
     * 不合格 : 回写库存状态说明为不合格 生成退料单(暂不处理，使用视图)
     * @param criteria 质检结果信息封装对象
     * @param currentUser 当前用户
     */
    QcRecord qcResult(QcResultCriteria criteria,CurrentUser currentUser);


    /**
     * 质检回传
     * @param qcRecord
     * @param currentUser
     */
    void submit(QcRecord qcRecord, CurrentUser currentUser);


    /**
     * 全部合格
     * @param acceptRecord
     * @param currentUser
     */
    void submitAll(AcceptRecord acceptRecord, CurrentUser currentUser);

    /**
     * 不合格退料
     * @param criteria
     * @return
     */
    List<QcRecordDto> findReturnList(QcRecordCriteria criteria);

    String allotPrint(String billNo, CurrentUser currentUser);
}
